
#坐标数据
#这些坐标点都是有误差的，并不是完全准确的
x = [1,2,3,4,5]
y = [2.5,4.5,6.1,8.5,10.3]

#计算斜率与截距
n = len(x)

#这个计算使用了最小二乘法，计算的是线性回归方程的斜率和截距
#最小二乘法的推导涉及了微积分

sum_x = sum(x)
sum_y = sum(y)
sum_xy = sum([x[i] * y[i] for i in range(n)])

sum_xx = sum(x[i]*x[i] for i in range(n))

#计算斜率
slope = (n*sum_xy - sum_x*sum_y) / (n*sum_xx - sum_x**2)

#计算截距
intercept = (sum_y - slope * sum_x) / n 

print(f"y = {slope}x+{intercept}")